// -----------------------------------------------------------------------------
// File Name    : macrodef.h
// Title        : Some useful macros
// Author       : Seeseawe - Copyright (C) 2007
// Created      : 2008-1-15
// Revised      : 2008-1-15
// Version      : 0.1
// Target MCU   : Any
// Editor Tabs  : 4
// Editor Line  : 80 chars/line
// -----------------------------------------------------------------------------

#ifndef __MICRO_DEF__
#define __MICRO_DEF__

#ifndef BV
	#define BV(bitx)			((u32)1<<(bitx))
#endif
#ifndef cbi
	#define cbi(REG, bitx)	REG &= ~(BV(bitx))
#endif
#ifndef sbi
	#define sbi(REG, bitx)	REG |= (BV(bitx))
#endif

// Check if the bit is '1'
#define bit_is_set(REG, bitx)   (((REG) & BV(bitx)) != 0)
// Check if the bit is '0'
#define bit_is_clr(REG, bitx)   (((REG) & BV(bitx)) == 0)

// MIN/MAX/ABS macros
#define SMALLER(a, b)			(((a) < (b))?(a):(b))
#define LARGER(a, b)			(((a) > (b))?(a):(b))
#define ABS(x)					((x > 0)?(x):(-x))
#define GET_ARRAY_LENGTH(array)    (sizeof(array)/sizeof(array[0]))
#endif
